package com.my.cloud.controller;

import cn.hutool.core.util.IdUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

/**
 * @author zhupanlin
 * @version 1.0
 * @description: TODO
 * @date 2024/3/11 10:25
 */
@RestController
public class PayCircuitController
{
    //=========Resilience4j CircuitBreaker 的例子
    @GetMapping(value = "/pay/circuit/{id}")
    public String myCircuit(@PathVariable("id") Integer id)
    {
        if(id == -4) {
            throw new RuntimeException("----circuit id 不能负数");
        }
        if(id == 9999){
            try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); }
        }
        return "Hello, circuit! inputId:  "+id+" \t " + IdUtil.simpleUUID();
    }
    
    @GetMapping("/pay/bulkhead/{id}")
    public String myBulkhead(@PathVariable("id") Integer id){
        if (id == -4) {
            throw new RuntimeException("----bulkhead id 不能负数");
        }
        
        if (id == 9999){
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        return "Hello, bulkhead! input ：" + id + "\t" + IdUtil.simpleUUID();
    }
    
    @GetMapping("/pay/ratelimit/{id}")
    public String myRatelimit(@PathVariable("id") Integer id){

        return "hello, myRatelimit欢迎到来 inputId： " + id + "\t" + IdUtil.simpleUUID();
    }
}
